NPC - Script
|
';' Regel
Anweisungen mit () z.B. w(1000) brauchen kein ';' am Ende. Zuweisungen (r1=1;)
und '++',' --', (++r1;) enden mit ';' .
Kommentar: //.....: nur bis zum Ende der Zeile. /* von */ bis: auch über mehrere Zeilen.
[] Index: Die Nummer der Variable kann mit anderen Variablen indexiert werden.
Beispiel:
b1=1; //---- Schleife b1=1 - b1=8 ------ :1 f[b1]=b1+5; //.....Es werden f1 bis f8 zugewiesen. ++b1; if(b1<9)go(1)
|
if - Abfrage
|
if( expr) stat e stat; ?(expr)...
|
expr= [Nicht]Variable (Vergleich (Variable|Zahl) [Logik])*.
|
Beispiel:
|
if(f1)f2=2; | expr(f1) '0' = False; '>=1' = True;
|
if(~i1)f2=2; | '~' = Verneinung (nicht bei float)
|
if(r7!=1)r8=0; e r8=1; | 'e' = else;
|
?(b1=3 & i2=-1 | r1=1)f2=2; |
'( )' in expr nicht möglich |
|
|
: Adresse
|
0-9 Sprung | a-z Unterprogramm
|
max. 10 | max. 10
|
Beispiel:
|
go(3) ... :3 ++i1; ... | a{......} go(a)
|
|
|
:I{}
|
Interrupt ( Unterbrechung ) erhöht die Echtzeit- (Real-time) Fähigkeit des Scripts. Die Reaktion des Programms auf Änderungen der Hardware wird durch lange Programme oder Warte-Befehle wie w() oder pg() verlangsamt. Interrupt (wie ein Unterprogramm aufgebaut) wird nach jeder Programmzeile oder in Warte-Befehlen ausgeführt. Variable it bestimmt die Zeitabstände. Wird it nicht bestimmt oder ist it=0, wird das Interrupt so oft wie möglich ausgeführt.
Warte-Befehle wie w() oder pg() sollten hier vermieden werden. Auch lange Programm-Ketten sind nicht ratsam wenn it klein ist.
|
Beispiel:
|
it=2500; //2,5 Sek. :I{p1=~p1;} ...
|
|
|
go(Adresse[ohne:])
|
0-9 Sprung | a-z Unterprogramm aufrufen.
|
max. 10 | max. 10
|
Beispiel:
|
go(3) ... :3 ++i1; ... | :c{...[ret;]...} go(c) ...
|
|
|
ret;
|
Return (Rücksprung) aus dem Unterprogramm. Unterbricht das Unterprogramm an beliebiger Stelle. Am Ende des Unterprogramms ist ret; nicht notwendig.
|
Beispiel:
|
:c{...[ret;]...} go(c) ... |
|
|
|
w(zahl|Var) Warten in ms
|
Wartefunktion in Millisekunden. Die Programmausführung wird für die Zeit gestoppt. Zahl (0-65535) oder Variable als Parameter. Min. Zeit 10 ms.
|
Beispiel:
|
i2=1000; w(i2)......w(2500) |
|
|
|
pg(IP) Ping an die IP senden
|
Das Ergebnis wird in der pg Variablen gespeichert. '-1' keine Antwort '>0' Antwortzeit in ms.
Die IP wird gespeichert. Bei zweitem Aufruf und gleicher IP reicht nur pg().
|
Beispiel:
|
pg(192.168.0.25) if(pg>0)...//empfangen; |
|
|
|
udp(IP,Port,String) UDP String an die IP senden
|
IP z.B.: 192.168.178.85 Port: Zahl|Var. Variablen werden in Int (16Bit) Format umgewandelt String: 'Zeichenkette' [/zahl (ASCII Zeichen)] [Var] [/Var (Variable binär)] /Var - (Variable binär) wandelt die Var nicht in ASCII um, sondern sendet die binär Werte je nach Größe 1-4 Byte: wenn u1=1; wird nicht 49 (ASCII '1') sondern 1 gesendet.
Die IP und Port werden gespeichert. Bei zweitem Aufruf und gleicher IP und Port reicht nur udp('....').
|
Beispiel: |
f2=65000; u1=1; udp(192.168.178.85,f2,'test '/u1\42' test weiter')
|
|
| String - max. 64 zeichen f1.3 (0-9) - float Nachkommastellen
/Var Bytes gesendet - Big Endian
| \70 /Var
BYTE, Boolean Integer Float
| ASCII-Zeichen (z.B. \70= F) sendet Variable im Binär Format.
1 Byte 2 Bytes
4 Bytes |
| |
|
|
@() E-Mail Adresse
|
Die E-Mail Adresse wird festgelegt. Der Printbuffer wird an die Adresse durch das Befehl p(\@) per E-Mail versendet.
Die E-Mail-Einstellung muss konfiguriert sein (Einstellung/E-Mail).
|
Beispiel:
|
@(info@anel-elektronik.de) |
|
|
|
p() - Print - Drucken
|
Es wird in den Printbuffer ausgegeben. Der Printbuffer (1024 Byte) kann oben in der Steuerung angezeigt oder per E-Mail gesendet werden.
|
p(expr)
|
expr= '...' [\..][Var]['..']
|
Beispiel:
|
p('<tr><td>Version = 'v.1'<td>Temperatur = 't.2'°C')
|
p(h#2':'m#2':'s#2)
|
|
Print Buffer = 1024 Byte
f1.3 (0-9) - float Nachkommastellen
i1#3 (0-9) - mit Nullen füllen (nicht float)
String - max. 64 zeichen E-Mail Adress - max. 48 zeichen>
| \b \f \" \' \? \s \\ \70 \p25 \@
| (backspace) = ein Zeichen zurück. (form feed) = Cursor auf Anfang (\p0). = " = ' = ? space (HTML:   oder ). = \ ASCII-Zeichen (z.B. \70= F) position im Buffer E-Mail senden
|
| |
| |